package cn.bvin.lib.app;

import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;

/**
 * 标准化的Activity，把冗杂的onCreate简化成parserIntent、initData
 * initViews三个方法，顾名思义就是解析传参、初始化数据(包括实例化变量)、
 * 初始化视图(对findView，setClick之类的方法分化到此方法)。
 * 示例：
 * <pre class="prettyprint">
 * public class CalendarActivity extends Activity {
 *     ...
 *
 *    protected void onCreate(Bundle savedInstanceState) {
 *       super.onCreate(savedInstanceState);
 *       parserIntent(getIntent());
 *       initData();
 *       initViews(R.layout.calendar);
 *    }
 *
 *    public void parserIntent(Intent intent) {
 *       super.parserIntent(intent);
 *       //TODO intent.getXXX...
 *    }
 *
 *    public void initData() {
 *       super.initData();
 *       //TODO new List instance...
 *    }
 *
 *    public void initViews(View rootView) {
 *       super.initViews(rootView);
 *       //TODO findViewById....
 *    }
 * }
 * </pre>
 * @author bvin
 *
 */
public class StandardActivity extends AppCompatActivity implements ActivityStandardization{

    
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        AppManager.getAppManager().addActivity(this);
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        AppManager.getAppManager().finishActivity(this);
    }

    /**
     * 解析传递过来的intent
     * @param intent 一般是通过getIntent()拿到的intent
     */
    @Override
    public void parserIntent(Intent intent) {
        
    }

    @Override
    public void initData() {
        
    }
    
    /**
     * 初始化视图
     * @param rootView 如果是通过{@link #initViews(int)}方法来初始化视图，那么
     * 这个rootView通常是被inflate出来的View
     */
    @Override
    public void initViews(View rootView) {
        setContentView(rootView);
    }

    /**
     * 初始化视图，直接当作{@link #setContentView(int)}来用
     * @param layoutResID 布局资源id
     */
    protected void initViews(int layoutResID) {
        initViews(getLayoutInflater().inflate(layoutResID, null));
    }
    
}
